package org.bigdata.framework.core.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class ReplaceMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String content = "$title:机器人:大赛 AND ( $author:张:三 OR $summary:机器人是什么？ OR ( $author:张三 OR $summary:机器人是什么？ ) OR ( $author22:张三1 OR $sum2323mary:机器13人是什么？ AND OR ( $author22:张三 OR $sum2323mary:机器13人是什么？ ) ) ) NOT $title:abcd ";
		String content_new = content;
		// 得到的结果
		// AAtitleBB:aa机器人:大赛bb AND ( AAauthorBB:aa张:三bb OR
		// AAsummaryBB:aa机器人是什么？bb OR ( AAauthorBB:aa张三bb OR
		// AAsummaryBB:aa机器人是什么？bb ) OR ( AAauthor22BB:aa张三1bb OR
		// AAsum2323maryBB:aa机器13人是什么？bb AND OR ( AAauthor22BB:aa张三bb OR
		// AAsum2323maryBB:aa机器13人是什么？bb ) ) ) NOT AAtitleBB:aaabcdbb
		Pattern p = Pattern.compile("\\$(\\w+(\\d+)?):", Pattern.DOTALL);
		String res_str = content_new.replaceAll("AND|OR|NOT|\\(|\\)", " ");
		String[] res_str_arr = res_str.split("\\s+");
		for (String x : res_str_arr) {
			Matcher ps_mac = p.matcher(x);
			if (ps_mac.find()) {
				String head = ps_mac.group(1);
				String head_str = getField(head);
				String value_str = x.split(head)[1].substring(1);
				String newChar=head_str+":" + getValue(value_str);
				content_new=content_new.replace(x, newChar);
			}

		}
		System.out.println(content_new);
	}

	/**
	 * (该方法不能修改)
	 * 要替换的字符串（比如：title,传入title返回AAtitleBB）
	 * @param str
	 * @return
	 */
	public static String getField(String str) {
		return "AA" + str + "BB";
	}

	/**
	 * (该方法不能修改)
	 * 要替换的字符串（比如：张三,传入张三返回aa张三bb）
	 * @param str
	 * @return
	 */
	public static String getValue(String str) {
		return "aa" + str + "bb";
	}

}
